#
# print ("False")
# item_one = 1
# item_two = 2
# item_three = 3
# total = item_one + \
#         item_two + \
#         item_three
# days = ['Monday','Tuesday','Wendnesday','Thursday','friday']
# word = 'word'
# sentence = "这是一个句子"
# paragraph ="这是一个段落"
# a=input('请输入任意键结束：')
# print(a)
# import sys;x ='runoob';sys.stdout.write(x +'n')
# import suite
# import expression
# if expression:
#     suite
# elif expression:
#     suite
# else :
#     suite
# a, b, C = 1, 2, "john"
# str ='Hello World!'
# print (str)
# #输出完整字符串
# print (str[0])
# #输出字符串中的第一个字符
# print (str[2:5])
# #输出字符串中第三个至第六个之间的字符串
# print (str[2:])
# #输出从第三个字符开始的字符串
# print (str * 2)
# #输出字符串两次
# print(str + "TEST")
# #输出连接的字符串
# list =['runoob',786,2.23,'john',70.2 ]
# tinylist=[123,'john']
# print (list)
# #输出完整列表
# print (list[0])
# #输出列表的第一个元素
# print(list[1:3])
# #输出第二个至第三个元素
# print(list[2:])
# #输出从第三个开始至列表末尾的所有元素
# print (tinylist * 2)
# #输出列表两次
# print(list + tinylist)
# #打印组合的列表
# print (list[-2])
# #输出从第一个开始至第二个元素
# tuple =('runoob',786 ,2.23,'john',70.2)
# list =['runoob',786,2.23,'john',70.2 ]
# tuple[2]=1000
# #元组中是非法应用
# list[2]=1000
# #列表中是合法应用
# dict ={}
# dict['one']="This is one"
# dict[2]="This is two"
# tinydict = {'name':'runoob','code':6734,'dept':'sales'}
#
# print (dict['one'] )
# #输出键为'one'的值
# print (dict[2])
# #输出键为2的值
# print (tinydict)
# # 输出完整的字典
# print (tinydict.keys())
# #输出所有键
# print (tinydict.values())
# #输出所有值
# import random
#
#
# def guess_number_game():
#     # 生成1~100的随机整数
#     secret_number = random.randint(1, 100)
#     attempts = 0
#     max_attempts = 7
#
#     print("猜数字游戏！")
#     print("我已经想了一个1到100之间的整数，请你猜猜看。")
#
#     while True:
#         try:
#             # 获取玩家输入
#             guess = int(input("请输入你猜的数字: "))
#             attempts += 1
#
#             # 判断猜测结果
#             if guess < secret_number:
#                 print("小了")
#             elif guess > secret_number:
#                 print("大了")
#             else:
#                 print("恭喜你猜对了！")
#                 print(f"你一共用了 {attempts} 次猜对。")
#                 break
#
#             # 检查是否超过最大尝试次数
#             if attempts >= max_attempts:
#                 print("智商余额明显不足，游戏结束！")
#                 print(f"正确答案: {secret_number}")
#                 break
#
#         except ValueError:
#             print("请输入一个有效的整数！")
#
#
#   #运行
# if __name__ == "__main__":
#     guess_number_game()
# def is_prime(n):
#     """判断一个数是否为质数"""
#     if n < 2:
#         return False
#     if n == 2:
#         return True
#     if n % 2 == 0:
#         return False
#
#     # 检查从3到√n的奇数
#     for i in range(3, int(n ** 0.5) + 1, 2):
#         if n % i == 0:
#             return False
#     return True
#
#
# def find_primes():
#     """求n以内的所有质数"""
#     print("=" * 40)
#     print("         求n以内的所有质数")
#     print("=" * 40)
#
#     try:
#         n = int(input("请输入n的值: "))
#         if n < 2:
#             print("n必须大于等于2")
#             return
#
#         primes = []
#         for num in range(2, n + 1):
#             if is_prime(num):
#                 primes.append(num)
#
#         print(f"\n{n}以内的所有质数（共{len(primes)}个）:")
#         # 每行显示10个质数，美观输出
#         for i in range(0, len(primes), 10):
#             print(primes[i:i + 10])
#
#     except ValueError:
#         print("请输入一个有效的整数！")
#
#
# # 运行质数程序
# if __name__ == "__main__":
#     find_primes()
# def is_narcissistic_number(num):
#     """判断一个数是否为水仙花数"""
#     if num < 100:  # 水仙花数至少是三位数
#         return False
#
#     digits = str(num)
#     power = len(digits)
#     sum_of_powers = sum(int(digit) ** power for digit in digits)
#     return sum_of_powers == num
#
#
# def find_narcissistic_numbers():
#     """求n以内的水仙花数"""
#
#
#     try:
#         n = int(input("请输入n的值: "))
#         if n < 100:
#             print("水仙花数至少是三位数，请输入大于等于100的数")
#             return
#
#         narcissistic_numbers = []
#         for num in range(100, n + 1):
#             if is_narcissistic_number(num):
#                 narcissistic_numbers.append(num)
#
#         print(f"\n{n}以内的水仙花数（共{len(narcissistic_numbers)}个）:")
#         if narcissistic_numbers:
#             for narc_num in narcissistic_numbers:
#                 digits = list(str(narc_num))
#                 expression = " + ".join([f"{digit}^{len(digits)}" for digit in digits])
#                 result = " + ".join([f"{int(digit) ** len(digits)}" for digit in digits])
#                 print(f"{narc_num} = {expression} = {result}")
#         else:
#             print(f"{n}以内没有水仙花数")
#
#     except ValueError:
#         print("请输入一个有效的整数！")
#
#
# # 运行水仙花数程序
# if __name__ == "__main__":
#     find_narcissistic_numbers()
# def climb_stairs(n):
#     """计算n个台阶的走法总数"""
#     if n <= 0:
#         return 0
#     if n == 1:
#         return 1
#     if n == 2:
#         return 2
#
#     # 解法
#     dp = [0] * (n + 1)
#     dp[1] = 1
#     dp[2] = 2
#
#     for i in range(3, n + 1):
#         dp[i] = dp[i - 1] + dp[i - 2]
#
#     return dp[n]
#
#
# def climb_stairs_simple(n):
#     """计算n个台阶的走法总数"""
#     if n <= 0:
#         return 0
#     if n == 1:
#         return 1
#     if n == 2:
#         return 2
#
#     a, b = 1, 2
#     for _ in range(n - 2):
#         a, b = b, a + b
#     return b
#
#
# def calculate_stair_ways():
#
#     try:
#         n = int(input("请输入台阶数n: "))
#         if n <= 0:
#             print("台阶数必须大于0")
#             return
#
#         result = climb_stairs(n)
#         result2 = climb_stairs_simple(n)  # 验证两种方法结果一致
#
#         print(f"\n{n}个台阶的走法共有: {result} 种")
#
#         # 显示详细的递推过程
#         print(f"\n递推过程:")
#         print("f(1) = 1")
#         print("f(2) = 2")
#         for i in range(3, n + 1):
#             prev1 = climb_stairs(i - 1)
#             prev2 = climb_stairs(i - 2)
#             current = climb_stairs(i)
#             print(f"f({i}) = f({i - 1}) + f({i - 2}) = {prev1} + {prev2} = {current}")
#
#     except ValueError:
#         print("请输入一个有效的整数！")
#
#
# # 运行台阶走法程序
# if __name__ == "__main__":
#     calculate_stair_ways()
# class Teacher:
#     def __init__(self) -> None:
#         self.name = None
#         self.age = None
#         self.number = None
#         self.subject = None
#
#     def teach(self):
#         print(f'{self.name}正在教授{self.subject}')
# class Student:
#     def __init__(self)->None:
#         self.name=None
#         self.age=None
#         self.number=None
#         self.class_num=None
#
#     def study(self):
#         print(f'{self.name}正在学习{self.class_num}')
#
#
# t1 = Teacher()
# t1.name = '张三'
# t1.age = 30
# t1.number = '001'
# t1.subject = '数学'
# t1.teach()
# s1 = Student()
# s1.name = '李四'
# s1.age = 18
# s1.number = '002'
# s1.class_num = '1班'
# s1.study()
#
# import pandas as pd
# import matplotlib.pyplot as plt
#
# plt.rcParams['font.sans-serif'].insert(0, 'SimHei')
# plt.rcParams['axes.unicode_minus'] = False
# df3 = pd.read_csv(
#     '2023年北京积分落户数据.csv',
#     # encoding='utf-8’， # 字符集
#     # sep='\t',                #字段的分隔符（默认是逗号）
#     # index_col='公示编号',      #指定充当行索引的列
#     # usecols=['公示编号','姓名','积分分值']
#     # nrows=10,                    #指定加载多少行
#     # skiprows=np.arange(1,21),      #跳过哪些行
#     # true_values=['是','Y',"Yes'], #哪些值视为布尔值True
#     # false_values=['否','N',"yes','no’,'No'],  #哪些值视为布尔值False
#  # na_values=["---",'N/A'],          #哪些值视为空值
#     )
# df3
# # 查看DataFrame信息
# df3.info()
# #查看DataFrame前N行
# df3.head(3)
# #从Excel文件中加载数据创建DataFrame
# df4 = pd.read_excel(
# '2022年股票数据.xlsx',
#     sheet_name='JD',#加载的工作表的名字
#     usecols=['Date','Open','Close'],
#     index_col='Date'
# )
# print (df4)
# import pandas as pd
# #创建一个Series对象，指定名称为'A'，值分别为1，2，3，4
# #默认索引为0，1，2，3
# series=pd.Series([1,2,3,4],name='A')
# #显示Series对象
# print(series)
# #如果你想要显式地设置索引，可以这样做：
# custom_index=[1,2,3,4] #自定义索引
# series_with_index=pd.Series([1,2,3,4],index=custom_index,name='A')
# #显示带有自定义索引的series对象
# print(series_with_index)
#
#
# import pandas as pd
# #创建一个简单的DataFrame
# df = pd.DataFrame({
# 'Name':['Alice','Bob','Charlie'],
# 'Age':[25,30,35],
# 'city':['New York','Los Angeles','Chicago']
# })
# #将DataFrame写入Excel文件，写入'sheet1’表单
# df.to_excel('output.xlsx',sheet_name='Sheet1',index=False)
# #写入多个表单，使用Excelwriter
# with pd.ExcelWriter('output.xlsx') as writer:
#     df.to_excel(writer,sheet_name='Sheet1',index=False)
#     df.to_excel(writer,sheet_name='Sheet2',index=False)
#     print(df)
# import pandas as pd
# df = pd.read_csv('property.csv')
# print(df['NUM_BEDROOMS'])
# print(df['NUM_BEDROOMS'].isnull())
# df = pd.read_csv('property.csv')
# new_df = df.dropna()
# print(new_df.to_string())
#
# import pandas as pd
# df = pd.read_csv('property.csv')
# # df.dropna(subset-['ST NuM'],inplace =True)
# df.dropna(subset=['PID'],inplace=True)
# print(df.to_string())
#
# import pandas as pd
# df = pd.read_csv('property.csv')
# df.fillna(12345,inplace=True)
# print(df.to_string())
#
# import pandas as pd
# df =pd.read_csv('property.csv')
#  x = df["ST_NUM"].mean()
# # 将结果直接赋值回原列
# df["ST_NUM"] = df["ST_NUM"].fillna(x)
# print(df.to_string())
#
# import pandas as pd
# df =pd.read_csv('property.csv')
#
# x = df["ST_NUM"].median()
# # 将结果直接赋值回原列
# df["ST_NUM"] = df["ST_NUM"].fillna(x)
# print(df.to_string())
#
# import pandas as pd
# df =pd.read_csv('property.csv')
#
# x = df["ST_NUM"].mode()
# # 将结果直接赋值回原列
# df["ST_NUM"] = df["ST_NUM"].fillna(x)
# print(df.to_string())
#
# import pandas as pd
# person={
#      "name":['Coogle','Runoob','Taobao'],
#     "age":[50,200,12345]
# }
# df =pd.DataFrame(person)
# for x in df.index:
#     if df.loc[x,"age"]>120:
#       df.loc[x,"age"]=120
# print(df.to_string())
#
# import pandas as pd
#
# persons = {
#     "name": ['Google', 'Runoob', 'Runoob', 'Taobao'],
#     "age": [50, 40, 40, 23]
# }
#
# df = pd.DataFrame(persons)
# df.drop_duplicates(inplace = True)
# print(df)
#
# 接口调用
# 获取天气数据
# https://uapis.cn/docs/api-reference/get-misc-weather

# import requests
#
# base_url = "https://uapis.cn/api/v1/misc/weather"
# url = base_url + "?city=阿坝&adcode=514200"
#
# resp = requests.get(
#     url=url,
# )
#
# print(resp.json())
# print(resp.json()["weather"])
#
# import requests
# base_url="http://uapis.cn/api/v1/misc/phoneinfo"
# url=base_url+"?phone=15982518391"
# resp=requests.get(
#     url=url
#                   )
# print(resp.json())
#
# from openai import OpenAI
# client=OpenAI(api_key="sk-ptnrzfjdjjyaodjnhgoalmynkdhzxclqxvmksvlnddougmkp",base_url="https://api.siliconflow.cn/v1")
# question=input("请输入您的问题：")
# response=client.chat.completions.create(
# model="deepseek-ai/DeepSeek-V3",
# messages=[
#     {"role":"system","content":"你是一位幽默大师"},
#     {"role": "user", "content": question}
# ],
#     temperature=0.7,
#     max_tokens=1024,
#     stream=True
# )
#     #逐步接收并处理响应
# for chunk in response:
#     if not chunk.choices:
#        continue
#     if chunk.choices[0].delta.content:
#        print(chunk.choices[0].delta.content,end="",flush=True)
#     if chunk.choices[0].delta.reasoning_content:
#        print(chunk.choices[0].delta.reasoning_content,end="",flush=True)
#
# from http import HTTPStatus
# from urllib.parse import urlparse, unquote
# from pathlib import PurePosixPath
# import requests
# from dashscope import ImageSynthesis
# import os
#
# prompt = fr"一个玩滑板的红衣服黄头发的男生"
#
# # 请用百炼API Key
# api_key = ""
# print('---同步调用，请等待任务执行---')
# rsp = ImageSynthesis.call(api_key=api_key,
#     model="qwen-image",
#     prompt=prompt,
#     n=1,
#     size='1328*1328',
#     prompt_extend=True,
#     watermark=True)
#
# print('response: %s' % rsp)
# if rsp.status_code == HTTPStatus.OK:
#     # 在当前目录下保存图片
#     for result in rsp.output.results:
#         file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
#         with open('./data/draw/%s' % file_name, 'wb+') as f:
#             f.write(requests.get(result.url).content)
#
# else:
#     print('同步调用失败，status_code: %s, code: %s, message: %s' %
#         (rsp.status_code, rsp.code, rsp.message))
#
#
# import matplotlib.pyplot as plt
# import numpy as np
# xpoints =np.array([0,6])
# ypoints =np.array([0,200])
# plt.plot(xpoints,ypoints)
# plt.show()
#
# import matplotlib.pyplot as plt
# import numpy as np
# x = np.arange(0,4*np.pi,0.1) #_start,stop,step
# y = np.sin(x)
# Z = np.cos(x)
# plt.plot(x,y,x,Z)
# plt.show()
#
# import matplotlib.pyplot as plt
# import numpy as np
# ypoints=np.array([6,2,13,10])
# plt.plot(ypoints,'o:r',ms =10,mec ='r')
# plt.show()
#
# import numpy as np
# import matplotlib.pyplot as plt
# x=np.array([1,2, 3,4])
#
# y=np.array([1,4,9,16])
# plt.title("RUNOOB grid() Test")
# plt.xlabel("× -label")
# plt.ylabel("y - label")
# plt.plot(x, y)
# plt.grid()
# plt.show()
#
# import matplotlib.pyplot as plt
# import numpy as np
# #plot 1:
# xpoints = np.array([0, 6])
# ypoints = np.array([0,100])
# plt.subplot(1,2,1)
# plt.plot(xpoints,ypoints)
# plt.title("plot 1")
# #plot 2:
# x =np.array([1,2,3,4])
# y=np.array([1,4,9,16])
# plt.subplot(1,2,2)
# plt.plot(x,y)
# plt.title("plot 2")
# plt.suptitle("RuNooB subplot Test")
# plt.show()
#
# import pandas as pd
# import matplotlib.pyplot as plt
# import numpy as np
#
# # 设置中文显示
# plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# plt.rcParams["axes.unicode_minus"] = False
#
# # 1. 生成模拟数据（如果有实际数据，替换这部分即可）
# dates = pd.date_range(start="2023-11-01", end="2023-11-15")  # 15天销售日期
# channels = ["拼多多", "天猫", "京东", "抖音"]  # 销售渠道
#
# # 构造数据：日期、渠道、销售额
# data = []
# for date in dates:
#     for channel in channels:
#         # 基础销售额 + 随机波动（模拟日常销售变化）
#         base = 10000 if channel in ["拼多多", "天猫"] else 7000
#         sales = base + np.random.randint(-2000, 3000)
#         data.append({
#             "销售日期": date,
#             "渠道": channel,
#             "销售额": max(sales, 0)  # 确保销售额不为负
#         })
#
# df = pd.DataFrame(data)
#
# # 2. 数据处理：按日期和渠道整理
# pivot_df = df.pivot(index="销售日期", columns="渠道", values="销售额")
#
# # 3. 绘制折线图
# plt.figure(figsize=(12, 6))
#
# # 为每个渠道绘制折线
# for channel in pivot_df.columns:
#     plt.plot(pivot_df.index, pivot_df[channel], marker="o", label=channel, linewidth=2)
#
# # 设置坐标轴和标题
# plt.xlabel("销售日期", fontsize=12)
# plt.ylabel("销售额（元）", fontsize=12)
# plt.title("各平台销售日期-销售额趋势", fontsize=15)
#
# # 日期显示格式（仅显示月-日）
# plt.gcf().autofmt_xdate()  # 自动旋转日期标签
#
# # 添加图例和网格
# plt.legend()
# plt.grid(linestyle="--", alpha=0.7)
#
# # 显示图表
# plt.tight_layout()
# plt.show()
#
# import matplotlib.pyplot as plt
#
# # 设置中文字体
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'WenQuanYi Micro Hei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号
# # 1．准备数据
# labels = ['苹果', '香蕉', '橙子', '葡萄','玛丽丝']  # 类别标签
# sizes = [35, 25, 20, 10, 10]  # 各部分大小
# explode = [0.1, 0, 0, 0, 0]  # 突出显示第一部分（苹果）
#
# # 2．创建画布
# plt.figure(figsize=(8, 8), dpi=100)
#
# # 3．绘制饼图
# wedges, texts, autotexts = plt.pie(
#     sizes,
#     explode=explode,  # 突出显示设置
#     labels=labels,  # 类别标签
#     autopct='%1.1f%%',  # 显示百分比（保留1位小数）
#     shadow=True,  # 阴影效果
#     startangle=90,  # 起始角度（90度为从正上方开始）
#     colors=['red', 'yellow', 'orange', 'purple','black'],  # 自定义颜色
#     textprops={'fontsize': 12},  # 标签文字大小
#     pctdistance=0.85,  # 百分比文字距离圆心的距离（0-1）
#     wedgeprops={'edgecolor': 'white', 'linewidth': 2}  # 扇区边框
# )
#
# # 4．美化文本
# plt.setp(autotexts, size=10, weight='bold', color='white')  # 百分比文字样式
# plt.title('水果销量占比', fontsize=15)  # 标题
#
# # 5．保证饼图为正圆形
# plt.axis('equal')
#
# # 6．显示图表
# plt.tight_layout()
# plt.show()
#
# import matplotlib.pyplot as plt
#
# # 设置中文字体
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'WenQuanYi Micro Hei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号
# # 1．准备数据
# labels = ['优秀', '良好', '中等', '及格','不及格','缺考']  # 类别标签
# sizes = [15, 25, 30, 10, 8, 12]  # 各部分大小
#
# # 2．创建画布
# plt.figure(figsize=(8, 8), dpi=100)
#
# # 3．绘制饼图
# wedges, texts, autotexts = plt.pie(
#     sizes,
#     labels=labels,  # 类别标签
#     autopct='%1.1f%%',  # 显示百分比（保留1位小数）
#     shadow=True,  # 阴影效果
#     startangle=90,  # 起始角度（90度为从正上方开始）
#     colors=['#ff9999', 'yellow', 'orange', 'purple','black','#c2c2f0'],  # 自定义颜色
#     textprops={'fontsize': 12},  # 标签文字大小
#     pctdistance=0.85,  # 百分比文字距离圆心的距离（0-1）
#     wedgeprops={'edgecolor': 'white', 'linewidth': 2}  # 扇区边框
# )
#
# # 4．美化文本
# plt.setp(autotexts, size=10, weight='bold', color='white')  # 百分比文字样式
# plt.title('学生等级占比', fontsize=15)  # 标题
#
# # 5．保证饼图为正圆形
# plt.axis('equal')
#
# # 6．显示图表
# plt.tight_layout()
# plt.show()
#
# import matplotlib.pyplot as plt
# import numpy as np
#
# # 设置中文字体，防止乱码
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False
#
# # 数据准备
# months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
# sales = [8, 12, 10, 9, 11, 15, 18, 16, 13, 14, 17, 20]
#
# # 创建画布
# plt.figure(figsize=(12, 6),dpi=100)
#
# # 绘制折线图
# plt.plot(months, sales,
#          color='red',        # 线条颜色设为红色
#          marker='o',         # 标记每个数据点
#          markersize=8,       # 标记点大小
#          linewidth=2,        # 线条宽度
#          markerfacecolor='blue',  # 标记点填充颜色
#          markeredgecolor='darkred',  # 标记点边框颜色
#          markeredgewidth=1)
#
# # 设置图表标题和坐标轴标签
# plt.title('2024年奶茶店月度销售额趋势图', fontsize=16, fontweight='bold', pad=20)
# plt.xlabel('月份', fontsize=12)
# plt.ylabel('销售额 (万元)', fontsize=12)
#
# # 添加网格线
# plt.grid(True, alpha=0.3, linestyle='--')
#
# # 找出最高和最低销售额的月份
# max_sales = max(sales)
# min_sales = min(sales);
# max_month = months[sales.index(max_sales)]
# min_month = months[sales.index(min_sales)]
#
# # 标记最高和最低点
# plt.scatter(months[sales.index(max_sales)], max_sales, color='gold', s=150, zorder=5, label=f'最高点: {max_month} {max_sales}万')
# plt.scatter(months[sales.index(min_sales)], min_sales, color='lightblue', s=150, zorder=5, label=f'最低点: {min_month} {min_sales}万')
#
# # 添加图例
# plt.legend(loc='upper left', fontsize=10)
#
# # 调整布局
# plt.tight_layout()
#
# # 显示图表
# plt.show()
#
# import matplotlib.pyplot as plt
# import numpy as np
#
# # 设置中文字体，防止乱码
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False
#
# # 1. 准备数据
# np.random.seed(42) # 设置随机种子，保证结果可复现
# x = np.random.randn(200) # 200个符合正态分布的x值
# y = 2 * x + np.random.randn(200) * 0.5 # y与x关系互线性关系，加成声
# sizes = np.random.randint(10, 100, 200) # 点的大小（10-100随机）
# colors = np.random.rand(200) # 点的颜色（0-1随机，用于颜色映射）
#
# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)
#
# # 3. 绘制散点图
# scatter = plt.scatter(
#     x, y,
#     s=sizes,    # 点的大小
#     c=colors,    # 点的颜色（或颜色索引）
#     alpha=0.7,    # 透明度（0-1）
#     marker='o',    # 点形状
#     cmap='viridis',    # 颜色映射方案（修正：cmaps改为cmap）
#     edgecolors='black',    # 点边缘颜色
#     linewidths=0.5    # 点边缘宽度
# )
#
# # 4. 设置图表属性
# plt.title('变量x与y的散点图', fontsize=15)
# plt.xlabel('x值', fontsize=12)
# plt.ylabel('y值', fontsize=12)
# plt.grid(True, linestyle=':', alpha=0.5)  # 修正：true改为True，libestyle改为linestyle
# plt.colorbar(scatter, label='颜色强度') # 添加颜色映射条
#
# # 5. 显示图表
# plt.tight_layout()  # 修正：figure_layout改为tight_layout
# plt.show()
#
# import matplotlib.pyplot as plt
# import numpy as np
# from sklearn.linear_model import LinearRegression
# # 设置中文字体，防止乱码
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False
# # 数据准备
# prices = [89, 129, 169, 199, 229, 269, 299, 329, 369, 399]  # 单价（元）
# sales = [1200, 950, 800, 720, 600, 550, 480, 400, 300, 250]  # 月销量（件）
# # 创建画布
# plt.figure(figsize=(10, 6))
# # 绘制散点图
# plt.scatter(prices, sales, color='blue', marker='o', s=60, alpha=0.7, label='数据点')
# X = np.array(prices).reshape(-1, 1)
# y = np.array(sales)
# # 创建并训练线性回归模型
# model = LinearRegression()
# model.fit(X, y)
# # 生成趋势线数据点
# trend_x = np.linspace(min(prices), max(prices), 100).reshape(-1, 1)
# trend_y = model.predict(trend_x)
# # 绘制趋势线
# plt.plot(trend_x, trend_y, color='red', linewidth=2, label='趋势线')
# # 设置图表属性
# plt.title('连衣裙单价与月销量关系散点图', fontsize=15, fontweight='bold', pad=20)
# plt.xlabel('单价（元）', fontsize=12)
# plt.ylabel('月销量（件）', fontsize=12)
# # 添加网格线
# plt.grid(True, alpha=0.3, linestyle='--')
# # 添加图例
# plt.legend()
# # 调整布局
# plt.tight_layout()
# # 显示图表
# plt.show()
#
# import matplotlib.pyplot as plt
# # 设置中文字体，防止乱码
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False
# # 1. 准备数据
# labels = ['手机', '电脑', '平板', '手表']
# sizes = [45, 30, 15, 10]
# colors = ['#ff9999','#66b3ff','#99ff99','#ffcc99']
#
# # 2. 创建画布
# plt.figure(figsize=(8, 8), dpi=100)
#
# # 3. 绘制环形图（本质是带空白的饼图）
# plt.pie(
#     sizes,
#     labels=labels,
#     colors=colors,
#     autopct='%1.1f%%',
#     startangle=140,
#     pctdistance=0.85, # 百分比位置（比例图更靠外）
#     wedgeprops=dict(width=0.3, edgecolor='white') # width控制环的厚度
# )
#
# # 4. 添加中心空白（画一个白色圆覆盖中心）
# centre_circle = plt.Circle((0,0),0.70,fc='white') # 半径0.7的白色圆
# fig = plt.gcf() # 获取当前画布
# fig.gca().add_artist(centre_circle) # 添加中心圆
#
# # 5. 设置属性
# plt.title('电子设备销量占比', fontsize=15)
# plt.axis('equal') # 保证圆形
#
# # 6. 显示图表
# plt.tight_layout()
# plt.show()
#
# import matplotlib.pyplot as plt
# # 设置中文字体，防止乱码
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False
# # 1. 准备数据
# labels = ['技术部', '市场部', '运营部', '行政部','财务部']
# sizes = [35, 25, 20, 12, 8]
# colors = ['#ff9999','#66b3ff','#99ff99','#ffcc99','#ff6666']
#
# # 2. 创建画布
# plt.figure(figsize=(8, 8), dpi=100)
# plt.text(0, 0, '总预算\n1000万',
#          horizontalalignment='center',
#          verticalalignment='center',
#          fontsize=16,
#          fontweight='bold',
#          color='#333333')
# # 3. 绘制环形图（本质是带空白的饼图）
# plt.pie(
#     sizes,
#     labels=labels,
#     colors=colors,
#     autopct='%1.1f%%',
#     startangle=140,
#     pctdistance=0.85, # 百分比位置（比例图更靠外）
#     labeldistance=1.05,  # 调整标签距离圆心的距离
#     wedgeprops=dict(width=0.3, edgecolor='white') # width控制环的厚度
# )
#
# # 4. 添加中心空白（画一个白色圆覆盖中心）
# centre_circle = plt.Circle((0,0),0.70,fc='white') # 半径0.7的白色圆
# fig = plt.gcf() # 获取当前画布
# fig.gca().add_artist(centre_circle) # 添加中心圆
#
# # 5. 设置属性
# plt.title('2024年公司各部门预算占比', fontsize=15)
# plt.axis('equal') # 保证圆形
#
# # 6. 显示图表
# plt.tight_layout()
# plt.show()
#
# import numpy as np
# import matplotlib.pyplot as plt
# 设置中文字体，防止乱码
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False
# # 1. 准备数据
# np.random.seed(42)
# data = np.random.randn(1000) # 1000个符合标准正态分布的数据
#
# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)
#
# # 3. 绘制直方图
# n, bins, patches = plt.hist(
#     data,
#     bins=30,    # 分箱数量（或传入分箱边界数组）
#     density=True,    # 是否归一化（面积和为1）
#     color='skyblue',    # 柱形颜色
#     alpha=0.7,    # 透明度
#     edgecolor='black',    # 柱形边框颜色
#     linewidth=0.5    # 边框宽度
# )
#
# # 4. 叠加频率密度曲线（更直观展示分布）
# mu, sigma = np.mean(data), np.std(data)
# plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
#     np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
#     linewidth=2, color='red', label='正态分布曲线')
#
# # 5. 设置属性
# plt.title('正态分布数据直方图', fontsize=15)
# plt.xlabel('数据值', fontsize=12)
# plt.ylabel('频率密度', fontsize=12)
# plt.grid(axis='y', linestyle=':', alpha=0.7) # 只显示y轴网格
# plt.legend()
#
# # 6. 显示图表
# plt.tight_layout()
# plt.show()
#
import numpy as np
import matplotlib.pyplot as plt
# 设置中文字体，防止乱码
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False
# # 1. 准备数据
# np.random.seed(42)
# data = np.random.randn(1000) # 1000个符合标准正态分布的数据
#
# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)
#
# # 3. 绘制直方图
# n, bins, patches = plt.hist(
#     data,
#     bins=30,    # 分箱数量（或传入分箱边界数组）
#     density=True,    # 是否归一化（面积和为1）
#     color='skyblue',    # 柱形颜色
#     alpha=0.7,    # 透明度
#     edgecolor='black',    # 柱形边框颜色
#     linewidth=0.5    # 边框宽度
# )
#
# # 4. 叠加频率密度曲线（更直观展示分布）
# mu, sigma = np.mean(data), np.std(data)
# plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
#     np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
#     linewidth=2, color='red', label='正态分布曲线')
#
# # 5. 设置属性
# plt.title('正态分布数据直方图', fontsize=15)
# plt.xlabel('数据值', fontsize=12)
# plt.ylabel('频率密度', fontsize=12)
# plt.grid(axis='y', linestyle=':', alpha=0.7) # 只显示y轴网格
# plt.legend()
#
# # 6. 显示图表
# plt.tight_layout()
# plt.show()
#
# import matplotlib.pyplot as plt
#
# # 设置中文字体
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False
#
# # 1. 准备数据
# score_ranges = ['80-90', '90-100', '100-110', '110-120', '120-130', '130-140', '140-150']
# students_count = [5, 8, 12, 10, 8, 5, 2]
#
# # 2. 创建画布
# plt.figure(figsize=(12, 6), dpi=100)
#
# # 3. 绘制直方图
# bars = plt.bar(score_ranges, students_count,
#                color='orange',          # 橙色填充
#                alpha=0.7,               # 透明度
#                edgecolor='darkorange',  # 边框颜色
#                linewidth=1.5,           # 边框宽度
#                width=1.0)               # 柱宽为1，实现无间隔
#
# plt.yticks(range(0, 15))  # 设置刻度标签
# plt.ylim(0, 14)     # 设置显示范围
# # 5. 设置图表属性
# plt.title('高一年级数学成绩分布直方图', fontsize=16, fontweight='bold', pad=20)
# plt.xlabel('成绩区间（分）', fontsize=12)
# plt.ylabel('人数（人）', fontsize=12)
#
# # 设置Y轴范围，留出一些空间显示数字
# plt.ylim(0, max(students_count) + 2)
#
# # 添加网格线
# plt.grid(axis='y', linestyle='--', alpha=0.3)
#
# # 6. 显示图表
# plt.tight_layout()
# plt.show()
#
# import matplotlib.pyplot as plt
# import numpy as np
# # 设置中文字体，防止乱码
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False
# # 1. 准备数据
# categories = ['A', 'B', 'C', 'D', 'E']  # 修正后的类别
# data1 = [20, 18, 30, 35, 37]  # 第一组数据
# data2 = [25, 32, 34, 20, 25]  # 第二组数据
#
# x = np.arange(len(categories))  # 位置数组 (0,1,2,3,4)
# width = 0.35  # 柱状宽度
#
# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)
#
# # 3. 绘制柱状图
# rects1 = plt.bar(
#     x - width/2,  # 第一组柱状位置（左偏移width/2）
#     data1,
#     width,
#     label='数据组1',
#     color='skyblue',
#     edgecolor='black'
# )
#
# rects2 = plt.bar(
#     x + width/2,  # 第二组柱状位置（右偏移width/2）
#     data2,
#     width,
#     label='数据组2',
#     color='orange',
#     edgecolor='black'
# )
#
# # 4. 添加数据标签
# def add_label(rects):
#     for rect in rects:
#         height = rect.get_height()
#         plt.text(rect.get_x() + rect.get_width()/2, height + 0.5,
#                 f'{height}', ha='center', va='bottom', fontsize=10)
#
# add_label(rects1)
# add_label(rects2)
#
# # 5. 设置属性
# plt.title('数据对比图', fontsize=15)
# plt.xlabel('月份', fontsize=12)
# plt.ylabel('销量（件）', fontsize=12)
# plt.xticks(x, categories)  # 设置x轴刻度标签
# plt.ylim(0, 40)  # y轴范围
# plt.grid(axis='y', linestyle=':', alpha=0.7)
# plt.legend()
# # 6. 显示图表
# plt.tight_layout()
# plt.show()
#
# import matplotlib.pyplot as plt
# import numpy as np
#
# # 设置中文字体
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False
#
# # 1. 准备数据
# stores = ['门店A', '门店B', '门店C', '门店D']
# april_data = [20, 18, 22, 15]  # 4月数据
# may_data = [25, 20, 23, 18]    # 5月数据
# june_data = [22, 21, 25, 20]   # 6月数据
#
# x = np.arange(len(stores))  # 位置数组 (0,1,2,3)
# width = 0.25  # 柱状宽度
#
# # 2. 创建画布
# plt.figure(figsize=(12, 8), dpi=100)
#
# # 3. 绘制柱状图
# rects1 = plt.bar(
#     x - width,      # 4月柱状位置（左偏移width）
#     april_data,
#     width,
#     label='4月',
#     color='#FF6B6B',
#     edgecolor='black'
# )
#
# rects2 = plt.bar(
#     x,              # 5月柱状位置（居中）
#     may_data,
#     width,
#     label='5月',
#     color='#4ECDC4',
#     edgecolor='black'
# )
#
# rects3 = plt.bar(
#     x + width,      # 6月柱状位置（右偏移width）
#     june_data,
#     width,
#     label='6月',
#     color='#45B7D1',
#     edgecolor='black'
# )
#
# # 4. 添加数据标签
# def add_label(rects):
#     for rect in rects:
#         height = rect.get_height()
#         plt.text(rect.get_x() + rect.get_width()/2, height + 0.5,
#                 f'{height}', ha='center', va='bottom', fontsize=10)
#
# add_label(rects1)
# add_label(rects2)
# add_label(rects3)
#
# # 5. 设置属性
# plt.title('超市各门店第二季度营业额柱状图', fontsize=16)
# plt.xlabel('门店', fontsize=12)
# plt.ylabel('营业额（万元）', fontsize=12)
# plt.xticks(x, stores)  # 设置x轴刻度标签
# plt.ylim(0, 30)  # y轴范围
# plt.grid(axis='y', linestyle=':', alpha=0.7)
# plt.legend()
# # 显示图表
# plt.tight_layout()
# plt.show()
#
# import matplotlib.pyplot as plt
# import numpy as np
# # 设置中文字体
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False
# # 1. 准备数据
# labels = ['攻击力', '防御力', '速度', '血量', '暴击率']  # 维度标签
# n = len(labels)  # 维度数量
#
# # 两个样本数据（如两个游戏角色的属性）
# data1 = [90, 60, 80, 70, 95]
# data2 = [70, 85, 65, 90, 60]
#
# # 计算每个维度的角度（极坐标）
# angles = np.linspace(0, 2 * np.pi, n, endpoint=False).tolist()
# # 闭合雷达图（首尾相连）
# data1 = data1 + [data1[0]]
# data2 = data2 + [data2[0]]
# angles = angles + [angles[0]]
# labels = labels + [labels[0]]
#
# # 2. 创建画布（极坐标）
# plt.figure(figsize=(8, 8), dpi=100)
# ax = plt.subplot(111, polar=True)  # 设置为极坐标
#
# # 3. 绘制雷达图
# ax.plot(angles, data1, 'o-', linewidth=2, label='角色A')  # 角色A
# ax.fill(angles, data1, alpha=0.25)  # 填充颜色
# ax.plot(angles, data2, 's-', linewidth=2, label='角色B')  # 角色B
# ax.fill(angles, data2, alpha=0.25)
#
# # 4. 设置属性
# ax.set_thetagrids(np.degrees(angles), labels)  # 设置角度标签
# ax.set_ylim(0, 100)  # 设置数据范围
# ax.set_title('游戏角色属性对比', fontsize=15, pad=20)  # pad控制标题距离
# ax.grid(True)  # 显示网格
# plt.legend(loc='upper right', bbox_to_anchor=(1.3, 1.1))  # 图例位置
#
# # 5. 显示图表
# plt.tight_layout()
# plt.show()
# import matplotlib.pyplot as plt
# import numpy as np
# # 设置中文字体
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False
# # 1. 准备数据
# labels = ['攻击力', '防御力', '速度', '血量', '暴击率']  # 维度标签
# n = len(labels)  # 维度数量
#
# # 两个样本数据（如两个游戏角色的属性）
# data1 = [90, 60, 80, 70, 95]
# data2 = [70, 85, 65, 90, 60]
#
# # 计算每个维度的角度（极坐标）
# angles = np.linspace(0, 2 * np.pi, n, endpoint=False).tolist()
# # 闭合雷达图（首尾相连）
# data1 = data1 + [data1[0]]
# data2 = data2 + [data2[0]]
# angles = angles + [angles[0]]
# labels = labels + [labels[0]]
#
# # 2. 创建画布（极坐标）
# plt.figure(figsize=(8, 8), dpi=100)
# ax = plt.subplot(111, polar=True)  # 设置为极坐标
#
# # 3. 绘制雷达图
# ax.plot(angles, data1, 'o-', linewidth=2, label='角色A')  # 角色A
# ax.fill(angles, data1, alpha=0.25)  # 填充颜色
# ax.plot(angles, data2, 's-', linewidth=2, label='角色B')  # 角色B
# ax.fill(angles, data2, alpha=0.25)
#
# # 4. 设置属性
# ax.set_thetagrids(np.degrees(angles), labels)  # 设置角度标签
# ax.set_ylim(0, 100)  # 设置数据范围
# ax.set_title('游戏角色属性对比', fontsize=15, pad=20)  # pad控制标题距离
# ax.grid(True)  # 显示网格
# plt.legend(loc='upper right', bbox_to_anchor=(1.3, 1.1))  # 图例位置
#
# # 5. 显示图表
# plt.tight_layout()
# plt.show()
#
# import matplotlib.pyplot as plt
# import numpy as np
# # 设置中文字体
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False
# # 1. 准备数据
# labels = ['拍照', '性能', '续航', '外观', '价格']  # 维度标签
# n = len(labels)  # 维度数量
#
# # 两款手机的评分数据
# xiaomi_data = [8.5, 9.2, 7.8, 8.0, 7.5]
# huawei_data = [7.8, 8.5, 8.2, 8.5, 8.0]
#
# # 计算每个维度的角度（极坐标）
# angles = np.linspace(0, 2 * np.pi, n, endpoint=False).tolist()
#
# # 闭合雷达图（首尾相连）
# xiaomi_data = xiaomi_data + [xiaomi_data[0]]
# huawei_data = huawei_data + [huawei_data[0]]
# angles = angles + [angles[0]]
# labels = labels + [labels[0]]
#
# # 2. 创建画布（极坐标）
# plt.figure(figsize=(8, 8), dpi=100)
# ax = plt.subplot(111, polar=True)  # 设置为极坐标
#
# # 3. 绘制雷达图
# ax.plot(angles, xiaomi_data, 'o-', linewidth=2, label='小米手机', color='#FF6A00')  # 小米手机
# ax.fill(angles, xiaomi_data, alpha=0.25, color='#FF6A00')  # 填充颜色
# ax.plot(angles, huawei_data, 's-', linewidth=2, label='华为手机', color='#CF0A2C')  # 华为手机
# ax.fill(angles, huawei_data, alpha=0.25, color='#CF0A2C')
#
# # 4. 设置属性
# ax.set_thetagrids(np.degrees(angles), labels)  # 设置角度标签
# ax.set_ylim(0, 10)  # 设置数据范围
# ax.set_title('两款手机各维度评分雷达图', fontsize=15, pad=20)  # pad控制标题距离
# ax.grid(True)  # 显示网格
# plt.legend(loc='upper right', bbox_to_anchor=(1.3, 1.1))  # 图例位置
#
# # 5. 显示图表
# plt.tight_layout()
# plt.show()
#
# import matplotlib.pyplot as plt
# import numpy as np
#
# # 设置中文字体
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
# plt.rcParams['axes.unicode_minus'] = False
#
# # 1. 准备数据
# subjects = ['语文', '数学', '英语']
#
# # 箱线图数据
# data = [
#     [90, 100, 110, 120, 135],  # 语文
#     [85, 95, 115, 125, 140],   # 数学
#     [80, 90, 105, 115, 130]    # 英语
# ]
#
# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)
#
# # 3. 绘制箱线图
# box_plot = plt.boxplot(data,
#                        labels=subjects,
#                        patch_artist=True,
#                        showfliers=False)
#
# # 4. 设置箱线图样式
# colors = ['lightblue', 'lightgreen', 'lightyellow']
# for patch, color in zip(box_plot['boxes'], colors):
#     patch.set_facecolor(color)
#
# # 5. 手动添加数学异常值
# plt.scatter([2], [145], color='red', marker='o', s=50, zorder=3, label='异常值')
#
# # 6. 设置属性
# plt.title('语文、数学、英语成绩箱线图', fontsize=15, pad=20)
# plt.xlabel('科目', fontsize=12)
# plt.ylabel('成绩（分）', fontsize=12)
# plt.grid(axis='y', linestyle=':', alpha=0.7)
# plt.legend()
#
# # 7. 显示图表
# plt.tight_layout()
# plt.show()
#
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False
def chinese_wordcloud_demo():
    # 中文文本内容
    chinese_text = """Python是一种流行的编程语言。它被广泛应用于Web开发、数据科学、人工智能等领域。Python以其简洁性和可读性著称，许多初学者选择Python作为入门语言，因为它的语法容易理解。学习Python可以帮助你快速开发各种应用程序，从简单脚本到大型项目。"""

    # 中文分词（英文无需此步骤，中文必须分词才能正确识别词语）
    seg_list = jieba.cut(chinese_text, cut_all=False)  # 精确模式分词
    seg_text = " ".join(seg_list)  # 用空格连接分词结果（wordcloud需空格分隔的词语）

    # 中文字体路径（必须指定，否则中文会乱码，根据系统修改）
    font_path = "C:/Windows/Fonts/MSYH.TTC"  # 请替换为你的系统中文字体路径

    # 创建中文词云对象
    wc = WordCloud(
        font_path=font_path,    # 关键：指定中文字体
        background_color="white",
        width=800,
        height=600,
        max_words=100,
        stopwords={"的", "是", "可以", "一种"}  # 过滤停用词（可选）
    ).generate(seg_text)

    # 显示词云
    plt.figure(figsize=(10, 8))
    plt.imshow(wc)
    plt.axis("off")
    plt.title("中文词云示例")
    plt.show()